package com.husd.leetcode.sort;

import java.util.Arrays;

/**
 * 冒泡排序思路比较简单：
 * 1. 将序列当中的左右元素，依次比较，保证右边的元素始终大于左边的元素；
 * （ 第一轮结束后，序列最后一个元素一定是当前序列的最大值；）
 * 2. 对序列当中剩下的n-1个元素再次执行步骤1。
 * 对于长度为n的序列，一共需要执行n-1轮比较 （利用while循环可以减少执行次数）
 */
public class BubbleSort {

    // 冒泡排序，a表示数组，n表示数组大小
    public static void sort(int[] a, int n) {
        if (n <= 1) return;
        for (int i = 0; i < n; ++i) {
            for (int j = 0; j < n - i - 1; ++j) {
                if (a[j] > a[j + 1]) { // 交换
                    int tmp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = tmp;
                }
            }
        }
    }

    public static void main(String[] args) {

        int[] a = {5, 4, 3, 2, 1, 6, 7, 10, 8, 9};
        int n = a.length;
        BubbleSort.sort(a, n);
        System.out.println(Arrays.toString(a));
    }
}